home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Atari Compendium
/
The Atari Compendium (Toad Computers) (1994).iso
/
files
/
umich
/
utils
/
gemfst15.lzh
/
GEMFBIND.DOC
< prev
next >
Wrap
Text File
|
1990-06-29
|
16KB
|
313 lines
***************************************************************************
GEMFAST
Public Domain GEM bindings
by Ian Lepore
***************************************************************************
This document provides general background on the GEMFAST bindings system,
installation and usage information, and documents some of the internals
applicable to the C programmer.
---------------------------------------------------------------------------
DOCUMENT CONTENTS
---------------------------------------------------------------------------
1.0 - Packing List
2.0 - Background
3.0 - Functions supported by the bindings
4.0 - Installation and Usage
5.0 - About the GEMFAST.H header file
6.0 - Notes
7.0 - Bugs
8.0 - Support
9.0 - About the (non-existant) copyright
---------------------------------------------------------------------------
1.0 PACKING LIST
(xx = version, eg '10' = version 1.0)
---------------------------------------------------------------------------
GEMFSTxx.ARC - The runtime system, includes the following...
AESFAST.A - The AES bindings library.
VDIFAST.A - The VDI bindings library.
GEMFAST.H - The C-language header file for use with GEMFAST.
GEMF_Vxx.DOC - Version-specific release notes and revision history.
GEMUTIL.DOC - Documentation on non-standard utility functions.
GEMXTEND.DOC - Documentation on GEM extensions (Atari's and mine).
GEMFBIND.DOC - Installation and usage documentation.
GEMFSCxx.ARC - Source code for the package.
AESSRCxx.ARC - Source code for the AES bindings and utilities.
VDISRCxx.ARC - Source code for the VDI bindings.
GEMFXMxx.ARC - Example programs.
MINICOLR.ARC - Example desk accessory, a mini color pallete control.
MEMFIND.ARC - Example dialog-based program, displays free memory.
WINDXMPL.ARC - Example of object tree display in a window.
GEMFUTxx.ARC - The GEMFAST utilities in C source code format.
---------------------------------------------------------------------------
2.0 BACKGROUND
---------------------------------------------------------------------------
These binding libraries were written to address two needs: 1) The world
needed a good set of free GEM bindings to complement the various PD C
compilers that are available, and 2) The bindings available with most
commercial compilers aren't so hot either.
These routines have been written to be faster than your typical GEM
bindings. As a secondary consideration, I tried to make them smaller as
well. When you recompile an application using these libararies, you
should notice a drop in program size, and the link phase of the compile
should run faster (your mileage may vary). The design goals included
using as little bss and data memory as possible (the stack is used for
temporary storage as needed), and that references requiring relocation
fixup be kept to a minimum.
These bindings are known to be compatible with Alcyon C, Sozobon C, and
Laser C. They should be compatible with any compiler/linker system
which uses 'DRI-standard' object & library file formats. In addition,
the C source code version of the utilities should work with any C compiler.
There will be support for MWC *someday*, but I will NOT commit to a date.
---------------------------------------------------------------------------
3.0 FUNCTIONS SUPPORTED IN THESE BINDINGS
---------------------------------------------------------------------------
The VDIFAST library includes most of the functions documented in the
Digital Research publication _GEM Programmer's Guide Vol 1: VDI_. Some
of the VDI functions are missing from the VDIFAST library,
notably the 'Polaroid Pallete' stuff, the v_cellarray() functions, and
similar rarely-used items.
The AESFAST library includes all AES functions documented in the DRI
publication _GEM Programmer's Guide Vol 2: AES_. Also included are the
'standard' AES utility functions (rc_intersect, etc), and a collection
of non-standard utilities of my own. The document file GEMUTIL.DOC
describes the utility functions. The AES functions that Atari added
beginning with TOS 1.4 are also supported. See GEMXTEND.DOC for more
information. (As of GemFast release 1.4, a new calling standard for AES
functions has been added. These are documented in GEMXTEND.DOC).
The DRI documents cited above are the definitive reference for the
standard AES & VDI functions. If you are using other documents (such as
Abacus books) there may be some variations between your documents and
the libraries. Sorry, I decided it was safer to use the original DRI
docs as my source of info. TOS 1.4 functions were built to the
specs in the TOS 1.4 developer's release notes, and thus ARE SUBJECT TO
CHANGE, depending on what Atari does with the final release of TOS 1.4.
---------------------------------------------------------------------------
4.0 INSTALLATION AND USAGE
---------------------------------------------------------------------------
Copy the VDIFAST.A and AESFAST.A files to the drive and path where your
linker will look for runtime-library files. (EG: \sozobon\lib). Copy
the GEMFAST.H file to the drive and path where your compiler looks for
include files (EG: \sozobon\include).
If you are using the Atari 'aln' linker, you will need to use aln's
DOINDEX program to create .NDX files for each of the libraries. ALWAYS
BE SURE TO RE-INDEX THE LIBRARY WHEN YOU INSTALL A NEW VERSION OF THE
BINDINGS!
To link with the GEMFAST libraries, just enter the library names on the
command line for the linker program. For example (using Sozobon):
ld -o myprog.prg dstart.o myprog.o dlibs.a vdifast.a aesfast.a
or
cc -o myprog.prg myprog.c vdifast.a aesfast.a
It should not matter where on the command line the names of the GEMFAST
libs appear: each library is self-contained, and the linker will not
have to resolve references between libraries. No special code is needed
in your startup object file; you may continue to use whatever startup file
(dstart.o, apstart.o, etc) you currently use. Also, unlike some GEM
bindings, you do NOT need to include the VDI bindings libarary if your
program uses only AES function calls.
(An aside: I've seen a lot of programs that open a VDI workstation, and
then use only AES functions within the program. If you use only AES
functions, you do NOT need to open a VDI virtual workstation.)
---------------------------------------------------------------------------
5.0 ABOUT THE GEMFAST HEADER FILE
---------------------------------------------------------------------------
All VDI and AES functions return an 'int' or are of type 'void'
(returning nothing). Given the lack of ST C compilers which support
function prototyping, a header file full of 'extern int xxx()' type
declarations is a waste of compile time. The GEMFAST.H file contains
constants and structures commonly used in GEM programming.
If your current bindings system uses OBDEFS.H and GEMDEFS.H, remove the
#include statements for those files, and insert #include <gemfast.h> in
your source code. While it is possible to continue using your old header
files, your code will become less compatible as future versions of GEMFAST
are released, as the GEMFAST.H file now contains #defines to redirect some
old utility function names to the new names. Also, the GEMFAST.H file
contains #define GEMFAST_H 1, and code is gonna hit the PD pretty soon that
requires that constant to be set to correctly detect that the GEMFAST
bindings are being used.
If you have a lot of existing code that #include's OBDEFS and GEMDEFS, you
can painlessly upgra